// Action 提交的是 mutation，而不是直接变更状态。
// Action 可以包含任意异步操作。

/* 导出actions方法 */
import {showLoading, hideLoading, showFullscreenImg, hideFullscreenImg} from './widgetUi'
import { initNimSDK } from './initNimSDK'

import { searchUsers } from './search'
import { setCurrSession, resetCurrSession } from './session'
import { sendMsg, sendFileMsg, sendMsgReceipt, getHistoryMsgs, updateLocalMsg } from './msgs'

function connectNim({ state, commit, dispatch, rootState }, obj) {
  let { force } = Object.assign({}, obj)

  if(state.nim && rootState.userintro && (state.nim.account != rootState.userintro.userCode)) {
    force = true;
  }
  // 操作为内容页刷新页面，此时无nim实例
  if (!state.nim || force) {
    let loginInfo = {
      uid: rootState.userintro && rootState.userintro.userCode,
      sdktoken: rootState.userintro && rootState.userintro.imToken
    }
    if (loginInfo.uid) {
      // console.log('initNimSDK', loginInfo)
      dispatch('initNimSDK', loginInfo)
    }
  }
}

export default {
  updateRefreshState({ commit }) {
    commit('updateRefreshState')
  },

  // UI 及页面状态变更
  showLoading,
  hideLoading,
  showFullscreenImg,
  hideFullscreenImg,

  // 连接sdk请求，false表示强制重连
  connect(store, obj) {
    connectNim(store, obj)
  },

  disconnect({state}) {
    state.nim.disconnect()
  },

  updata_ShowSide({commit}, params) {
    commit('isShowSide', params)
  },

  // 初始化 重新连接SDK
  initNimSDK,

  // 搜索用户信息
  searchUsers,

  // 设置当前会话
  setCurrSession,
  // 重置当前会话
  resetCurrSession,
  // 发送消息
  sendMsg,
  sendFileMsg,
  // 发送消息已读回执
  sendMsgReceipt,
  // 更新本地消息
  updateLocalMsg,
  getHistoryMsgs,
}
